Device Plug and Play (PnP) capabilities available in today's operating systems evolved out of a need for easier setup, configuration, and addition of peripherals to a PC. Universal Plug and Play (UPnP) extends this simplicity to include the entire network, enabling discovery and control of networked devices and services, such as network-attached printers, Internet gateways, and consumer electronics equipment. UPnP, however, is more than just a simple extension of the Plug and Play peripheral model. It is designed to support zero-configuration, “invisible” networking, and automatic discovery for a breadth of device categories from a wide range of vendors.
With UPnP, a device can dynamically join a network, obtain an IP address, convey its capabilities, and learn about the presence and capabilities of other devices—all automatically; truly enabling zero configuration networks. Devices can subsequently communicate with each other directly; thereby further enabling peer to peer networking. The varieties of device types that can benefit from a UPnP enabled network are large and include intelligent appliances, wireless devices, and PCs of all form factors. The scope of UPnP is large enough to encompass many existing, as well as new and exciting scenarios including home automation, printing and imaging, audio/video entertainment, kitchen appliances, automobile networks, and proximity networks in public venues.
There are many ways automatic discovery and control of devices can make life easier and better and the advent of UPnP is opening up new possibilities and uses every day. For example, if an individual were to come home today with a new printer to use on his existing home network, he would have to take several steps to make sure that the printer could be used by all of the PCs on the network, let alone available to any other device that may have a need to print. Specifically, he would need to connect the printer to an existing PC, load the device driver, share the printer on the network, then go to each of the other PCs on the network and connect to that shared printer. With UPnP, he can instead simply plug the printer into any available network port, be it phone line, power line, or Ethernet, and have the printer immediately available to all devices and users of the network.
In addition to device discovery, UPnP also provides an infrastructure for device eventing as well. UPnP devices may contain one or more services which expose actions that model the various services' states using state variables. For instance, a clock service could be modeled as having a state variable, current_time, which defines the state of the clock, and two actions, set_time and get_time, which allows for control of the service. A service in a UPnP device consists of a state table, a control server, and an event server. The state table models the state of the service through state variables and updates them when the state changes. The control server receives action requests (such as set_time), executes them, updates the state table and returns responses. The event server publishes events to interested subscribers anytime the state of the service changes. For instance, the clock service could send an event to interested subscribers when its state changes to “alarm ringing.”
Automatic discovery and control of networked devices in UPnP is achieved in large part through the use of control points. A control point in a UPnP network is a controller capable of discovering and controlling other devices. Once devices are attached to the network and addressed appropriately, discovery can take place. Discovery is handled by the Simple Service Discovery Protocol (SSDP). When a device is added to the network, SSDP allows that device to advertise its services to control points on the network. When a control point is added to the network, SSDP allows that control point to search for devices of interest on the network. The fundamental exchange in both cases is a discovery message containing a few, essential specifics about the device or one of its services, for example its type, identifier, and a pointer to its XML (Extensible Markup Language) device description document. After discovery, a control point could: retrieve the device description and get a list of associated services; retrieve service descriptions for interesting services; invoke actions to control the service; and subscribe to the service's event source.
UPnP v1.0 device discovery and eventing is currently quite inefficient when a large number of control points exist. With respect to device discovery, it is highly desirable that devices are able to be discovered in a rapid fashion. Specifically, the goal with discovery is to ensure that all control points receive the announcement that a device has joined the network. The goal with eventing is to ensure that all control points get the notification of an update on the device. For instance, if the various control points are displaying a user interface showing the current picture on a picture frame, then if one of the control points shifts to the next picture, then the rest of the control points are sent a notification by the device about the change in its status.
As it stands now, the above processes are extremely inefficient. In each case the device sequentially establishes a connection with each control point and sends it an announcement or notification. In the presence of a large number of control points, this mechanism does not scale efficiently, and many control points end up getting announcements and notifications much later than the initial ones.
In addition, discovery of devices does not extend beyond the subnet. Scenarios exist where there is a need to discover devices beyond just the subnet. For instance, an extended family that is geographically distributed may be interested in discovering a printer in one of the users' home and being able to print to it.
Accordingly, a need exists for a method that is able to effectively scale UPnP device discovery and eventing in the presence of a large number of control points, and to extend the scope of discovery beyond the local subnet. The invention provides such a method. These and other advantages of the invention, as well as additional inventive features, will be apparent from the description of the invention provided herein.